nextjs server actionの使い所
ざっくりみた感じだと置き換えるものって訳ではないみたいやな。
うまく共存して使うのが良さそう
api routeもこうパフォーマンスってなってくるとバックエンドのシステムはどのみち必要になりそう
---
まずServer Action自体はその名の通りサーバーでActionを実行するやつ。
Clientからサーバーサイドで実行したいコードを呼び出せるってのが大まかな機能かな。
Client ComponentでもServer Componentでも呼べる
ざっくりいえば、Clientサイドからでもサーバー側の処理を呼び出せるってことかな。
API RoutesだとAPIにエンドポイントを指定してリクエストしてサーバーサイドで実行って形だけど、Server Actionだと関数として記述してサーバーサイドのコードを実行できる
Formのmutationばっかりが目立ってるけど、別にFormのSubmission以外でも使える。
公式でも書いてるけど、clientのonClickでfetchUsersしたりデータフェッチでも使っちゃいけないわけでもない。
ただ基本的にdata fetchとかをserver componentで取得するだけでいいなら、'use server'使ってserver actionにしたりはしなくてもいい。そのままawaitしてfetchすれば。
それぞれ、やりたいことが違うとおもう。
うまく言語かできないけど、個人的にServer ActionのほうがAPIを作ってリクエストしてってのをやるより、関数の型定義とかをそのまま共有してある程度使えるってのは便利なのかな?
関数なので、responseを返さなくてもいいしthrowできるのでクライアントでcatchして処理もできる
うーんとはいえ、別にAPIでもできなくはないことではある。なので細かい点で見れば違うけど似たようなことはできるんだろう。
じゃあServer Actionをなぜ使うかって言われると難しいな。
エンドポイント叩かなくていいget, post考えなくてもいいとかぐらいかな....わからん。
体感API ClientとAPIの中身を一緒に書いてるみたいな感覚。
js切っても動くってところは確かにメリットかもしれないけどこれだけがメリットではないと思う。